﻿
namespace GradeApp.Web
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies aspnet_MembershipMetadata as the class
    // that carries additional metadata for the aspnet_Membership class.
    [MetadataTypeAttribute(typeof(aspnet_Membership.aspnet_MembershipMetadata))]
    public partial class aspnet_Membership
    {

        // This class allows you to attach custom attributes to properties
        // of the aspnet_Membership class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class aspnet_MembershipMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private aspnet_MembershipMetadata()
            {
            }

            public Guid ApplicationId { get; set; }

            public aspnet_Users aspnet_Users { get; set; }

            public string Comment { get; set; }

            public DateTime CreateDate { get; set; }

            public string Email { get; set; }

            public int FailedPasswordAnswerAttemptCount { get; set; }

            public DateTime FailedPasswordAnswerAttemptWindowStart { get; set; }

            public int FailedPasswordAttemptCount { get; set; }

            public DateTime FailedPasswordAttemptWindowStart { get; set; }

            public bool IsApproved { get; set; }

            public bool IsLockedOut { get; set; }

            public DateTime LastLockoutDate { get; set; }

            public DateTime LastLoginDate { get; set; }

            public DateTime LastPasswordChangedDate { get; set; }

            public string LoweredEmail { get; set; }

            public string MobilePIN { get; set; }

            public string Password { get; set; }

            public string PasswordAnswer { get; set; }

            public int PasswordFormat { get; set; }

            public string PasswordQuestion { get; set; }

            public string PasswordSalt { get; set; }

            public Guid UserId { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies aspnet_UsersMetadata as the class
    // that carries additional metadata for the aspnet_Users class.
    [MetadataTypeAttribute(typeof(aspnet_Users.aspnet_UsersMetadata))]
    public partial class aspnet_Users
    {

        // This class allows you to attach custom attributes to properties
        // of the aspnet_Users class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class aspnet_UsersMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private aspnet_UsersMetadata()
            {
            }

            public Guid ApplicationId { get; set; }

            public aspnet_Membership aspnet_Membership { get; set; }

            public bool IsAnonymous { get; set; }

            public DateTime LastActivityDate { get; set; }

            public string LoweredUserName { get; set; }

            public string MobileAlias { get; set; }

            public Guid UserId { get; set; }

            public string UserName { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies AssesmentFormsMetadata as the class
    // that carries additional metadata for the AssesmentForms class.
    [MetadataTypeAttribute(typeof(AssesmentForms.AssesmentFormsMetadata))]
    public partial class AssesmentForms
    {

        // This class allows you to attach custom attributes to properties
        // of the AssesmentForms class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class AssesmentFormsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private AssesmentFormsMetadata()
            {
            }

            [Display(AutoGenerateField = false)]
            public EntityCollection<AssesmentResults> AssesmentResults { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid CourseId { get; set; }

            [Display(AutoGenerateField = false)]
            public Courses Courses { get; set; }

            public string Description { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid Id { get; set; }

            public int MaxPoints { get; set; }

            public string Type { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies AssesmentResultsMetadata as the class
    // that carries additional metadata for the AssesmentResults class.
    [MetadataTypeAttribute(typeof(AssesmentResults.AssesmentResultsMetadata))]
    public partial class AssesmentResults
    {

        // This class allows you to attach custom attributes to properties
        // of the AssesmentResults class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class AssesmentResultsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private AssesmentResultsMetadata()
            {
            }

            public Guid AssesmentFormId { get; set; }

            public AssesmentForms AssesmentForms { get; set; }

            public string Points { get; set; }

            public Guid StudentId { get; set; }

            public Students Students { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ClassesMetadata as the class
    // that carries additional metadata for the Classes class.
    [MetadataTypeAttribute(typeof(Classes.ClassesMetadata))]
    public partial class Classes
    {

        // This class allows you to attach custom attributes to properties
        // of the Classes class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ClassesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ClassesMetadata()
            {
            }

            [Display(AutoGenerateField = false)]
            public EntityCollection<ClassPresences> ClassPresences { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid CourseId { get; set; }

            [Display(AutoGenerateField = false)]
            public Courses Courses { get; set; }

            [Display(Order = 2)]
            [RegularExpression("^2.+", ErrorMessage = "Wrong date!")]
            public DateTime DateTime { get; set; }

            [Display(Order = 1)]
            public string Description { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid Id { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ClassPresencesMetadata as the class
    // that carries additional metadata for the ClassPresences class.
    [MetadataTypeAttribute(typeof(ClassPresences.ClassPresencesMetadata))]
    public partial class ClassPresences
    {

        // This class allows you to attach custom attributes to properties
        // of the ClassPresences class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ClassPresencesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ClassPresencesMetadata()
            {
            }

            public Classes Classes { get; set; }

            public Guid ClassId { get; set; }

            public Guid StudentId { get; set; }

            public Students Students { get; set; }

            public bool WasPresent { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies CourseConfigurationsMetadata as the class
    // that carries additional metadata for the CourseConfigurations class.
    [MetadataTypeAttribute(typeof(CourseConfigurations.CourseConfigurationsMetadata))]
    public partial class CourseConfigurations
    {

        // This class allows you to attach custom attributes to properties
        // of the CourseConfigurations class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CourseConfigurationsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CourseConfigurationsMetadata()
            {
            }

            public int AbsencesAlarmPercent { get; set; }

            [Display(AutoGenerateField = false)]
            public EntityCollection<Courses> Courses { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid Id { get; set; }

            public int PointsAlarmPercent { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies CoursesMetadata as the class
    // that carries additional metadata for the Courses class.
    [MetadataTypeAttribute(typeof(Courses.CoursesMetadata))]
    public partial class Courses
    {

        // This class allows you to attach custom attributes to properties
        // of the Courses class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class CoursesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private CoursesMetadata()
            {
            }

            [Display(AutoGenerateField = false)]
            public EntityCollection<AssesmentForms> AssesmentForms { get; set; }

            [Display(AutoGenerateField = false)]
            public EntityCollection<Classes> Classes { get; set; }

            [Display(Name = "Number of classes", Order = 2)]
            [Required]
            [Range(0, 100, ErrorMessage = "Number of classes must be greater than 0 and less than 100")]
            public int ClassesNumber { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid CourseConfiguration_Id { get; set; }

            [Display(AutoGenerateField = false)]
            public CourseConfigurations CourseConfigurations { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid Id { get; set; }

            [Display(Name = "Course name", Order = 1)]
            [Required]
            public string Name { get; set; }

            [Display(AutoGenerateField = false)]
            public EntityCollection<StudentCourses> StudentCourses { get; set; }

            [Display(AutoGenerateField = false)]
            public EntityCollection<TutorCourses> TutorCourses { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies StudentCoursesMetadata as the class
    // that carries additional metadata for the StudentCourses class.
    [MetadataTypeAttribute(typeof(StudentCourses.StudentCoursesMetadata))]
    public partial class StudentCourses
    {

        // This class allows you to attach custom attributes to properties
        // of the StudentCourses class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class StudentCoursesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private StudentCoursesMetadata()
            {
            }

            public Guid CourseId { get; set; }

            public Courses Courses { get; set; }

            public Guid Id { get; set; }

            public Guid StudentId { get; set; }

            public Students Students { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies StudentsMetadata as the class
    // that carries additional metadata for the Students class.
    [MetadataTypeAttribute(typeof(Students.StudentsMetadata))]
    public partial class Students
    {

        // This class allows you to attach custom attributes to properties
        // of the Students class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class StudentsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private StudentsMetadata()
            {
            }

            [Display(AutoGenerateField = false)]
            public EntityCollection<AssesmentResults> AssesmentResults { get; set; }

            [Display(AutoGenerateField = false)]
            public EntityCollection<ClassPresences> ClassPresences { get; set; }

            [Display(AutoGenerateField = false)]
            public Guid Id { get; set; }

            public string Mail { get; set; }

            public string Name { get; set; }

            [Display(AutoGenerateField = false)]
            public EntityCollection<StudentCourses> StudentCourses { get; set; }

            public string Surname { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TutorCoursesMetadata as the class
    // that carries additional metadata for the TutorCourses class.
    [MetadataTypeAttribute(typeof(TutorCourses.TutorCoursesMetadata))]
    public partial class TutorCourses
    {

        // This class allows you to attach custom attributes to properties
        // of the TutorCourses class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TutorCoursesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TutorCoursesMetadata()
            {
            }

            public Guid CourseId { get; set; }

            public Courses Courses { get; set; }

            public bool IsOwner { get; set; }

            public Guid TutorId { get; set; }

            public Tutors Tutors { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TutorsMetadata as the class
    // that carries additional metadata for the Tutors class.
    [MetadataTypeAttribute(typeof(Tutors.TutorsMetadata))]
    public partial class Tutors
    {

        // This class allows you to attach custom attributes to properties
        // of the Tutors class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TutorsMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TutorsMetadata()
            {
            }

            public Guid Id { get; set; }

            public string Mail { get; set; }

            public string Name { get; set; }

            public EntityCollection<TutorCourses> TutorCourses { get; set; }
        }
    }
}
